我終於實現了今年給自己的目標 - 參加一次 iThome 鐵人賽並順利完賽。今天剛好是我轉職滿一週年的日子,我想輕鬆地分享這一年來的心得感想。
加入一家剛成立軟體開發部門的新創公司,為我開啟了意想不到的成長空間。這裡沒有資深工程師的帶領,這表示在專案技術選擇和開發流程上,我擁有相當大的決策權,這種經驗在大型企業中可能難以獲得。
公司規模不大,使得跨部門溝通變得輕而易舉,我們能迅速討論並調整需求,這讓我得以快速理解公司的營運邏輯。相較於在大企業中擔任「小小螺絲釘」,我更喜歡這裡讓我有機會深入了解公司的方方面面。
目前的專案時程相對寬裕,這給了我充足的時間去探索新工具,評估效益後再選擇是否導入專案中。或許有資深前輩帶領也很不錯,可以少走許多彎路,但我本身就喜歡面對挑戰,即便可能遇到挫折,而正是這種氛圍讓我喜歡現在的職位。
我們的辦公環境很新潮(比起軍中來說啦哈哈),開放式的無隔板座位設計促進了部門間的和諧溝通,扁平化的管理架構更是消除了部門之間的隔閡,公司平均年齡二十好幾,非常年輕活潑,整體營造出一個充滿活力和創意的工作空間。
作為一家雲端科技公司,我也因此考取了 AWS SAA 助理級雲端架構師證照,為我的未來發展增加了亮點。
在新創公司擔任後端工程師,我的日常工作遠比單純的撰寫程式碼來得豐富。事實上,大部分時間都投入在一系列多元且極具挑戰性的任務中,這種全方位的工作模式,不僅拓展了我的技能樹,也讓我對軟體開發領域有了更全面的認識。
在新創環境中,後端工程師通常需要扮演溝通橋樑的角色,時常需要與產品經理、前端開發者、主管,甚至直接與使用者進行交流。這種頻繁的跨部門互動不僅幫助我更快速地理解產品需求,也培養了我的溝通技巧和專案管理能力。
由於使用者通常不了解如何拆解問題,我必須將「工程師腦袋」放在一旁,學習透過比喻的方式讓他們容易理解情況。舉例來說,有次因為他們輸入的檔案格式不符(讀取 Excel 時找不到欄位名稱),導致應用程式執行失敗。追查問題時發現原來他們有需求更改欄位名稱,這部分就必須深入了解他們為什麼需要改動欄位名稱,確認哪一種方式比較可行,是他們固定欄位名稱,還是我這邊將各種可能的欄位名稱都先定義出來,藉此解決問題。
在新創公司,經常需要從零開始建立開發環境,這包括選擇並導入合適的技術、設置開發伺服器、配置資料庫,以及建立版本控制系統。這些任務雖然耗時,但讓我深入了解了系統架構的不同層面,可說是收穫滿滿。
有一次我們決定採用容器化技術來標準化我們的開發環境,這個過程不僅讓我學會了 Docker 的使用,還讓我理解了微服務架構的優勢。雖然建立起來的成果不算完美,但也有助於提升開發效率,這種成就感令人振奮。
隨著使用需求增加,程式碼逐漸龐大,系統優化成為了我工作上的新目標。這包括定期優化程式碼、調整資料庫查詢索引、更改伺服器配置,以及未來要實現的快取策略等。每一次優化都是一次學習的機會,讓我更深入地了解系統的運作機制。
舉例來說,某次我們的應用程式在產出容量較大的 Excel 檔案時,處理時間過長,效率遠不如預期。後來透過效能分析工具檢驗之後,發現是資料庫查詢速度緩慢,學著建立查詢索引以後,生產速度就大幅提升。這些問題在規模不大時都沒有察覺,沒想到資料量的成長可以帶來如此巨大的差異,這次經歷也給我上了寶貴的一課。
新創公司的資源通常較有限,我們優先選擇免費工具或套件解決問題。由於我們的專案都是從零開始,先前也沒有建立過開發流程,因此部署常常會花費很多時間在解決環境配置問題上,學習的內容真的是超級廣泛。
最近,我提議將目前專案導入容器化技術。我透過 GitHub Actions 將打包容器自動化,並自動發佈至 GitHub Package。在生產環境上安裝 Watchtower 這個監控映像檔的工具,確保當 GitHub Package 出現新的版本時能自動拉取並更新。雖然目前還有些問題尚未解決,但已經初步完成了 CI/CD 的部分,對於這方面的學習收穫十分滿意。
在新創公司擔任後端工程師,職責範圍遠超過單純的程式碼撰寫。這種多元化的工作環境其實正合我意,讓我有機會在各個領域都得到成長和發展。雖然有時會感到壓力,但每一天都充滿了新的學習機會。
這種廣泛的工作經驗不僅增加了我的學習廣度,也為未來的職涯規劃增加更多可能性,因為在這裡,我不僅僅是敲敲代碼的碼農,更是期許自己成為一個問題解決者、溝通者和開創者。
對於那些正在考慮選擇新創或是大型企業的求職者們,我的建議是:如果還不確定自己未來想走什麼路線,不妨擁抱新創這種多元化的挑戰,或許,你的收穫會比想像中更加豐富唷。